home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gnome-vfs-2.0 / libgnomevfs / gnome-vfs-dns-sd.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-05-01  |  5.3 KB  |  172 lines

  1. /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
  2. /* gnome-vfs-dns-sd.h - DNS-SD functions
  3.  
  4.    Copyright (C) 2004 Red Hat, Inc
  5.  
  6.    The Gnome Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Library General Public License as
  8.    published by the Free Software Foundation; either version 2 of the
  9.    License, or (at your option) any later version.
  10.  
  11.    The Gnome Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Library General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Library General Public
  17.    License along with the Gnome Library; see the file COPYING.LIB.  If not,
  18.    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19.    Boston, MA 02111-1307, USA.
  20.  
  21.    Author: Alexander Larsson <alexl@redhat.com>
  22. */
  23.  
  24. #ifndef GNOME_VFS_DNS_SD_H
  25. #define GNOME_VFS_DNS_SD_H
  26.  
  27. #include <sys/types.h>
  28. #include <glib.h>
  29. #include <glib-object.h>
  30. #include <libgnomevfs/gnome-vfs-result.h>
  31.  
  32. G_BEGIN_DECLS
  33.  
  34. /* TODO:
  35.  * a way to get default browse domain for domain
  36.  * async listing of browse domains
  37.  * some way to publish. Using dns update for unicast?
  38.  */
  39.    
  40.  
  41. typedef struct {
  42.     char *name;
  43.     char *type;
  44.     char *domain;
  45. } GnomeVFSDNSSDService;
  46.  
  47. typedef enum {
  48.     GNOME_VFS_DNS_SD_SERVICE_ADDED,
  49.     GNOME_VFS_DNS_SD_SERVICE_REMOVED
  50. } GnomeVFSDNSSDServiceStatus;
  51.  
  52. GType gnome_vfs_dns_sd_service_status_get_type (void);
  53. #define GNOME_VFS_TYPE_VFS_DNS_SD_SERVICE_STATUS (gnome_vfs_dns_sd_service_status_get_type())
  54.  
  55. typedef struct GnomeVFSDNSSDBrowseHandle GnomeVFSDNSSDBrowseHandle;
  56. typedef struct GnomeVFSDNSSDResolveHandle GnomeVFSDNSSDResolveHandle;
  57.  
  58. /**
  59.  * GnomeVFSDNSSDBrowseCallback:
  60.  * @handle: handle of the operation generating the callback
  61.  * @status: whether a service addition or removal was detected
  62.  * @service: the service that was discovered or removed
  63.  * @callback_data: user data defined when the callback was established
  64.  *
  65.  * Callback for the gnome_vfs_dns_sd_browse() function that informs
  66.  * the user of services that are added or removed.
  67.  **/
  68. typedef void (* GnomeVFSDNSSDBrowseCallback) (GnomeVFSDNSSDBrowseHandle *handle,
  69.                           GnomeVFSDNSSDServiceStatus status,
  70.                           const GnomeVFSDNSSDService *service,
  71.                           gpointer callback_data);
  72.  
  73. /**
  74.  * GnomeVFSDNSSDResolveCallback:
  75.  * @handle: handle of the operation generating the callback
  76.  * @result: whether the resolve succeeded or not
  77.  * @service: the service that was resolved
  78.  * @host: the host name or ip of the host hosting the service
  79.  * @port: the port number to use for the service
  80.  * @text: a hash table giving additional options about the service
  81.  * @text_raw_len: length of @text_raw
  82.  * @text_raw: raw version of the additional options in @text
  83.  * @callback_data: user data defined when the callback was established
  84.  *
  85.  * Callback for the gnome_vfs_dns_sd_resolve() function that is called
  86.  * when a service has been resolved.
  87.  *
  88.  * The @host and @port can be used to contact the requested service, and
  89.  * @text contains additional options as defined for the type requested.
  90.  * 
  91.  * To check for options being set in @text without any value ("key" as
  92.  * opposed to "key=value") you must use g_hash_table_lookup_extended(), since
  93.  * they are stored in the hash table with a NULL value, and g_hash_table_lookup()
  94.  * can't tell that from the case where the key is not in the hash table.
  95.  **/
  96. typedef void (* GnomeVFSDNSSDResolveCallback) (GnomeVFSDNSSDResolveHandle *handle,
  97.                            GnomeVFSResult result,
  98.                            const GnomeVFSDNSSDService *service,
  99.                            const char *host,
  100.                            int port,
  101.                            const GHashTable *text,
  102.                            int text_raw_len,
  103.                            const char *text_raw,
  104.                            gpointer callback_data);
  105.  
  106. /* Async versions */
  107.  
  108.  
  109. GnomeVFSResult
  110. gnome_vfs_dns_sd_browse (GnomeVFSDNSSDBrowseHandle **handle,
  111.              const char *domain,
  112.              const char *type,
  113.              GnomeVFSDNSSDBrowseCallback callback,
  114.              gpointer callback_data,
  115.              GDestroyNotify callback_data_destroy_func);
  116.  
  117. GnomeVFSResult
  118. gnome_vfs_dns_sd_stop_browse (GnomeVFSDNSSDBrowseHandle *handle);
  119.  
  120.  
  121. GnomeVFSResult                  
  122. gnome_vfs_dns_sd_resolve (GnomeVFSDNSSDResolveHandle **handle,
  123.               const char *name,
  124.               const char *type,
  125.               const char *domain,
  126.               int timeout,
  127.               GnomeVFSDNSSDResolveCallback callback,
  128.               gpointer callback_data,
  129.               GDestroyNotify callback_data_destroy_func);
  130.  
  131. GnomeVFSResult
  132. gnome_vfs_dns_sd_cancel_resolve (GnomeVFSDNSSDResolveHandle *handle);
  133.  
  134.  
  135. /* Sync versions */
  136.  
  137. GnomeVFSResult
  138. gnome_vfs_dns_sd_browse_sync (const char *domain,
  139.                   const char *type,
  140.                   int timeout_msec,
  141.                   int *n_services,
  142.                   GnomeVFSDNSSDService **services);
  143.  
  144.  
  145. GnomeVFSResult                  
  146. gnome_vfs_dns_sd_resolve_sync (const char *name,
  147.                    const char *type,
  148.                    const char *domain,
  149.                    int timeout_msec,
  150.                    char **host, int *port,
  151.                    GHashTable **text,
  152.                    int *text_raw_len,
  153.                    char **text_raw);
  154.  
  155. void
  156. gnome_vfs_dns_sd_service_list_free (GnomeVFSDNSSDService *services,
  157.                     int n_services);
  158.  
  159. GnomeVFSResult
  160. gnome_vfs_dns_sd_list_browse_domains_sync (const char *domain,
  161.                        int timeout_msec,
  162.                        GList **domains);
  163.  
  164.  
  165. GList *
  166. gnome_vfs_get_default_browse_domains (void);
  167.  
  168.  
  169. G_END_DECLS
  170.  
  171. #endif /* GNOME_VFS_DNS_SD_H */
  172.